<html>
<body>
Reports tail recursion, that is, when a method calls itself as its last action before returning.
<p>
  Tail recursion can always be replaced by looping, which will be considerably faster.
  Some JVMs perform tail-call optimization, while others do not. Thus, tail-recursive solutions may have considerably different
  performance characteristics on different virtual machines.
</p>
<p>Example:</p>
<pre><code>
  int factorial(int val, int runningVal) {
    if (val == 1) {
      return runningVal;
    } else {
      return factorial(val - 1, runningVal * val);
    }
  }
</code></pre>
<p>After the quick-fix is applied:</p>
<pre><code>
  int factorial(int val, int runningVal) {
    while (true) {
      if (val == 1) {
        return runningVal;
      } else {
        runningVal = runningVal * val;
        val = val - 1;
      }
    }
  }
</code></pre>
<!-- tooltip end -->

</body>
</html>